package com.xbongbong.pro.statistic.result.pojo;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xbongbong.paas.field.FieldAttrEntity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * 承接自定义表单需要展示、汇总、分组等字段
 * @author yuqian
 * @version v1.0
 * @date 2019/2/19 19:46
 * @since v1.0
 */
@Getter
@Setter
@ToString
public class FieldAttrPojo extends FieldAttrEntity{
    private static final long serialVersionUID = 2933816948922425185L;

//    /**
//     * 图表id
//     */
//    private Long formId;

    /**
     * 列表头标识 1表示为列表头
     */
    private Integer columnFlag;

    /**
     * 计算公式
     */
    private JSONObject formulaInfo;

    /**
     * 高级计算
     * @see com.xbongbong.pro.statistic.enums.AdvancedComputingFirstEnum,com.xbongbong.pro.statistic.enums.AdvancedComputingSecondEnum
     */
    private JSONArray advancedComputing;

    /**
     * 汇总字段在组中的顺序
     */
    private Integer groupIndex;

    /**
     * 时间维度
     * @see com.xbongbong.pro.enums.IntervalTypeEnum
     */
    private String timeDimension;

    /**
     * 指标图副标题标志
     */
    private Boolean secondTargetFlag;

    /**
     * 定位日期字段在行列中第几个
     * @see com.xbongbong.pro.statistic.enums.RowColIndexEnum
     */
    private Integer dateFieldIndex;

    /**
     * 数值格式
     */
    private Integer numFormat;

    /**
     * 钻取时使用该字段用于区分表单or数据集，其他场景非该含义
     */
    private Integer type;

    /**
     * 数据集id
     */
    private Long setId;

    /**
     * 特殊字段（部门、分类）钻取设置 交互规则
     * 默认选中2, 1逐级下钻字段内部结构（如层级字段A-B-C，下钻顺序为A->B1->B2->B3->C）；2直接下钻至层级结构中的下一个字段（如设置A-B-C，下钻顺序为A->B->C）
     * @link ChartDrillWayEnum
     */
    private Integer drillWay;

    /**
     * 层级唯一标识uuid
     * 描述当前钻取字段所属钻取层级唯一标识，在钻取表内存放
     */
    private String drillUuid;

    /**
     * 条件
     * @see com.xbongbong.paas.enums.ConditionEnum
     */
    private String symbol;

    /**
     * 筛选value值，格式不固定，有时候是字符串、有时候是数组
     */
    private Object value;

    /**
     * 临时值，用于临时存储value转为long类型的值
     */
    private Long valueLong;

    /**
     * 筛选value值，格式不固定，有时候是字符串、有时候是数组
     */
    private String valueText;

    /**
     * 关联类型字段属性 (但是子类也有，因为目前属性没有拆分到对应的服务，临时这样解决)
     */
    private JSONObject linkedAttr;
}
